package com.jiantong.work.service;

import com.jiantong.work.model.RetailBreedRecord;
import io.terminus.common.model.Paging;
import io.terminus.common.model.Response;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by mz on 25/7/17.
 *
 */
public interface RetailBreedRecordReadService {

    /**
     * 根据id查询单据详情
     * @param id 单据主键
     * @return RetailBreedRecord
     */
    Response<RetailBreedRecord> findById(Long id);

    /**
     * 分页查询单个散户的单据信息
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param status 状态
     * @param breedFactoryId 养殖场id
     * @return Paging<RetailBreedRecord>
     */
    Response<Paging<RetailBreedRecord>> paging(Integer pageNo, Integer pageSize ,Integer status, Long breedFactoryId);

    /**
     * 分页查询多个养殖场的单据信息
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param status 状态
     * @param breedFactoryId 养殖场ID
     * @param breedType 养殖类型
     * @param villageId 村id
     * @param start 从日期
     * @param end 到日期
     * @return Paging<RetailBreedRecord>
     */
    Response<Paging<RetailBreedRecord>> pagingMulti(Integer pageNo, Integer pageSize, Integer status, Long breedFactoryId, Integer breedType, Long villageId, Date start, Date end);

    /**
     * 根据主键ID 查询单据的当前状态
     * @param id 主键ID
     * @return Map<String,Integer>
     */
    Response<Map<String,Integer>> findStatusById(Long id);

    /**
     * 查询出一个是否免疫的list
     * @param breedFactoryIds 养殖场ids
     * @return List<Boolean>
     */
    Response<List<Boolean>> countIsVaccine(List<Long> breedFactoryIds);



    /**
     * 分页查询多个养殖场的单据信息
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param status 状态
     * @param breedFactoryId 养殖场ID
     * @param breedType 养殖类型
     * @param villageId 村id
     * @param start 从日期
     * @param end 到日期
     * @return Paging<RetailBreedRecord>
     */
    Response<Paging<RetailBreedRecord>> pagingByVillage(Integer pageNo, Integer pageSize, Integer status, Long breedFactoryId, Integer breedType, Long villageId, Date start, Date end);

    /**
     * 溯源
     * @param breedFactoryId 养殖场id
     * @param markNumber 耳标号（完整）
     * @return RetailBreedRecord
     */
    Response<RetailBreedRecord> findByMarkNumber(Long breedFactoryId , String markNumber);
}
